#ifndef DENSITY_MATRIX_HPP
#define DENSITY_MATRIX_HPP
/**
 * @file   density_matrix.hpp
 * @author Kimmo Luoma <kimmo@PHOTON3>
 * @date   Tue Oct 23 14:24:06 2012
 * 
 * @brief  Class for density matrix
 * 
 * 
 */
#include "gen_op.hpp"
#include "state.hpp"
namespace QuantumWalk{
  template<typename T>
  class density_matrix:public gen_op{
    typedef gen_op::ptr_t ptr_t;
  public:
    density_matrix():gen_op(){};
    density_matrix(const state<T> &psi);
    density_matrix(matrix<T> m);
    matrix<T>& asmatrix();
    virtual ptr_t pointer(){
      return this;
    }
    
  private:
    matrix<T> data_;
    
  };
};
#endif
